package cn.hacynn.nd.service;

import cn.hacynn.nd.pojo.dto.*;
import cn.hacynn.nd.pojo.entity.User;
import cn.hacynn.nd.pojo.vo.STSVO;
import com.baomidou.mybatisplus.extension.service.IService;
import org.springframework.web.multipart.MultipartFile;

/**
 * @Author Hacynn
 * @Date 2024/5/24 22:55
 * @Version 1.0
 */
public interface UserService {

    /**
     * 用户登录
     * @param userLoginDTO
     * @return
     */
    User login(UserLoginDTO userLoginDTO);

    /**
     * 获取当前用户信息
     * @return
     */
    User currentUser();

    /**
     * 获取当前用户bucketName
     * @return
     */
    String getBucketName();

    /**
     * 上传头像
     * @param file
     * @return
     */
    String uploadAvatar(MultipartFile file);

    /**
     * 修改昵称
     * @param name
     */
    void updateName(String name);

    /**
     * 生成 STS 凭证
     * @return
     */
    STSVO getSTS();

    /**
     * 发送验证码到邮箱
     * @param email
     */
    void sendCode(String email);

    /**
     * 使用邮箱进行登录，没有该用户则直接注册一个
     * @param emailLoginDTO
     */
    User emailLogin(EmailLoginDTO emailLoginDTO);

    /**
     * 更新用户密码
     * @param updatePasswordDTO
     */
    void updatePassword(UpdatePasswordDTO updatePasswordDTO);

    /**
     * 更新用户邮箱
     * @param updateEmailDTO
     */
    void updateEmail(UpdateEmailDTO updateEmailDTO);

    /**
     * 修改密码
     * @param forgetPasswordDTO
     */
    void forgetPassword(ForgetPasswordDTO forgetPasswordDTO);

    /**
     * 修改密钥
     * @param forgetSafeCodeDTO
     */
    void forgetSafeCode(ForgetSafeCodeDTO forgetSafeCodeDTO);
}
